package com.sheng.leetcode.year2023.month11.day07;

import org.junit.Test;

import java.util.HashSet;

/**
 * @author by ls
 * @date 2023/11/7
 * <p>
 * 2586. 统计范围内的元音字符串数<p>
 * <p>
 * 给你一个下标从 0 开始的字符串数组 words 和两个整数：left 和 right 。<p>
 * 如果字符串以元音字母开头并以元音字母结尾，那么该字符串就是一个 元音字符串 ，其中元音字母是 'a'、'e'、'i'、'o'、'u' 。<p>
 * 返回 words[i] 是元音字符串的数目，其中 i 在闭区间 [left, right] 内。<p>
 * <p>
 * 示例 1：<p>
 * 输入：words = ["are","amy","u"], left = 0, right = 2<p>
 * 输出：2<p>
 * 解释：<p>
 * - "are" 是一个元音字符串，因为它以 'a' 开头并以 'e' 结尾。<p>
 * - "amy" 不是元音字符串，因为它没有以元音字母结尾。<p>
 * - "u" 是一个元音字符串，因为它以 'u' 开头并以 'u' 结尾。<p>
 * 在上述范围中的元音字符串数目为 2 。<p>
 * <p>
 * 示例 2：<p>
 * 输入：words = ["hey","aeo","mu","ooo","artro"], left = 1, right = 4<p>
 * 输出：3<p>
 * 解释：<p>
 * - "aeo" 是一个元音字符串，因为它以 'a' 开头并以 'o' 结尾。<p>
 * - "mu" 不是元音字符串，因为它没有以元音字母开头。<p>
 * - "ooo" 是一个元音字符串，因为它以 'o' 开头并以 'o' 结尾。<p>
 * - "artro" 是一个元音字符串，因为它以 'a' 开头并以 'o' 结尾。<p>
 * 在上述范围中的元音字符串数目为 3 。<p>
 * <p>
 * 提示：<p>
 * 1 <= words.length <= 1000<p>
 * 1 <= words[i].length <= 10<p>
 * words[i] 仅由小写英文字母组成<p>
 * 0 <= left <= right < words.length<p>
 */
public class LeetCode2586 {

    @Test
    public void test01() {
        String[] words = {"are", "amy", "u"};
        int left = 0, right = 2;
//        String[] words = {"hey", "aeo", "mu", "ooo", "artro"};
//        int left = 1, right = 4;
        System.out.println(new Solution().vowelStrings(words, left, right));
    }
}

class Solution {
    public int vowelStrings(String[] words, int left, int right) {
        HashSet<Character> set = new HashSet<>();
        set.add('a');
        set.add('e');
        set.add('i');
        set.add('o');
        set.add('u');
        int ans = 0;
        // 'a'、'e'、'i'、'o'、'u'
        for (int i = left; i <= right; i++) {
            if (set.contains(words[i].charAt(0)) && set.contains(words[i].charAt(words[i].length() - 1))) {
                ans++;
            }
        }
        return ans;
    }
}
